package com.mf.model;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;

import org.hibernate.annotations.Type;

@Entity
@Table(name = "ORDDCM_MF_USR", uniqueConstraints = { @UniqueConstraint(columnNames = { "MAIL", "FC_ID" }) })
public class Kullanici {
	private int id;
	private String ad;
	private String soyad;
	private String mail;
	private String sifre;
	private Date dogumTarih;
	// private Cinsiyet cinsiyet;
	private String cinsiyet;
	private boolean deleted;
	private String gcmRegId;
	private String faceId;
	private boolean faceUser;
	private byte[] image;
	private Date tarih;
	private boolean statu;

	// private Set<Eslesme> eslesmesFrom = new HashSet<Eslesme>(0);
	// private Set<Eslesme> eslesmesTo = new HashSet<Eslesme>(0);
	// private Set<Dinleme> dinlemes = new HashSet<Dinleme>(0);

	// FIXME: Oracle da AUTO yok oid yapabiliriz veya sequence

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "ID")
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	@Column(name = "AD", nullable = false)
	public String getAd() {
		return ad;
	}

	public void setAd(String ad) {
		this.ad = ad;
	}

	@Column(name = "SOYAD", nullable = false)
	public String getSoyad() {
		return soyad;
	}

	public void setSoyad(String soyad) {
		this.soyad = soyad;
	}

	@Column(name = "MAIL")
	public String getMail() {
		return mail;
	}

	public void setMail(String mail) {
		this.mail = mail;
	}

	@Column(name = "SIFRE")
	public String getSifre() {
		return sifre;
	}

	public void setSifre(String sifre) {
		this.sifre = sifre;
	}

	@Column(name = "DOGUM_TARIH", nullable = false)
	public final Date getDogumTarih() {
		return dogumTarih;
	}

	public final void setDogumTarih(Date dogumTarih) {
		this.dogumTarih = dogumTarih;
	}

	@Column(name = "CINSIYET")
	public String getCinsiyet() {
		return cinsiyet;
	}

	public void setCinsiyet(String cinsiyet) {
		this.cinsiyet = cinsiyet;
	}

	// @Column(name = "CINSIYET", nullable = false)
	// public Cinsiyet getCinsiyet() {
	// return cinsiyet;
	// }
	//
	// public void setCinsiyet(Cinsiyet cinsiyet) {
	// this.cinsiyet = cinsiyet;
	// }

	@Column(name = "DELETED", nullable = false)
	@Type(type = "org.hibernate.type.BooleanType")
	public boolean isDeleted() {
		return deleted;
	}

	public void setDeleted(boolean deleted) {
		this.deleted = deleted;
	}

	@Column(name = "GCM_REG_ID", nullable = false)
	public String getGcmRegId() {
		return gcmRegId;
	}

	public void setGcmRegId(String gcmRegId) {
		this.gcmRegId = gcmRegId;
	}

	@Column(name = "FC_ID")
	public String getFaceId() {
		return faceId;
	}

	public void setFaceId(String faceId) {
		this.faceId = faceId;
	}

	@Column(name = "FC_USER")
	@Type(type = "org.hibernate.type.BooleanType")
	public boolean isFaceUser() {
		return faceUser;
	}

	public void setFaceUser(boolean faceUser) {
		this.faceUser = faceUser;
	}

	@Column(name = "FC_IMAGE")
	@Lob
	public byte[] getImage() {
		return image;
	}

	public void setImage(byte[] image) {
		this.image = image;
	}

	@Column(name = "TARIH", nullable = false)
	public final Date getTarih() {
		return tarih;
	}

	public final void setTarih(Date tarih) {
		this.tarih = tarih;
	}

	@Column(name = "STATU", nullable = false)
	@Type(type = "org.hibernate.type.BooleanType")
	public boolean isStatu() {
		return statu;
	}

	public void setStatu(boolean statu) {
		this.statu = statu;
	}

	// @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "from")
	// public final Set<Eslesme> getEslesmesFrom() {
	// return eslesmesFrom;
	// }
	//
	// public final void setEslesmesFrom(Set<Eslesme> eslesmesFrom) {
	// this.eslesmesFrom = eslesmesFrom;
	// }
	//
	// @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "to")
	// public final Set<Eslesme> getEslesmesTo() {
	// return eslesmesTo;
	// }
	//
	// public final void setEslesmesTo(Set<Eslesme> eslesmesTo) {
	// this.eslesmesTo = eslesmesTo;
	// }
	//
	// @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "kullanici")
	// public final Set<Dinleme> getDinlemes() {
	// return dinlemes;
	// }
	//
	// public final void setDinlemes(Set<Dinleme> dinlemes) {
	// this.dinlemes = dinlemes;
	// }

}
